唯品秀前端博客

前言 — 首先说说mpvue,当你看到这篇文章时候你应该对小程序是有所了解了。mpvue顾名思义是基于vue的一套框架,用于小程序,由美团开发,它的初衷就是尽可能让一套代码兼容多个终端(微信小程序,支付宝小程序,H5移动端等等)。但,mpvue又不完全等于vue,vue是运行在浏览器的,而小程序是依赖微信的,所以还是有区别的。mpvue去掉了vue的一些功能,并且在多个循环setData计算上性能其实不如原生,最重要的是,小程序原生本身就已经封装好了很多你需要的工具,比如完整的生命钩子函数以及数据的双向绑定。因此,在项目如果不需要考虑扩展兼容的话,其实mpvue是个累赘(其他小程序框架同理),哦,学习嘛,装逼嘛,还是可以的嘛

不支持在组件上使用 Class 与 Style 绑定

1
<my-component :class="myClass"></my-component> // 不支持

不支持在 template 内使用 methods 中的函数

1
<p>时间{{formatTime(time)}}</p> // 不支持

所有页面的created钩子在onLaunch后就执行了

页面初始化执行的函数写在onReady或onLoad里,created一般情况下不使用。

小程序参数获取

获取小程序在 page onLoad 时候传递的 options: this.$root.$mp.query

获取小程序在 app onLaunch/onShow 时候传递的 options:this.$root.$mp.appOptions

很显然,在原生里有类似的方法(option),这个只不过是画蛇添足

刷新当前页面(hack)

先获取当前页的url(包括query),然后重定向:

1
2
3
4
5
6
7
8
9
10
11
12
let pagesStack = getCurrentPages()  // eslint-disable-line
let activePage = pagesStack[pagesStack.length - 1]
let pageParams = activePage.options
let url = (function () {
  let base = './main'
  for (let i in pageParams) {
    base += '&' + i + '=' + pageParams[i]
  }
  let result = base.replace('&', '?')
  return result
})()
wx.redirectTo({ url: url })

本地图片使用

解决是:把路径import进来,或者是把图片放在static目录下引用,然而作为css background-image引用时,只能选择引用远程cdn图片,或者相对目录小于8k(webpck配置有关)的图片,不然编译器会报错。

不支持vuex的mapActions等辅助函数

只能用传统方式,调用同步的用commit,异步的调用dispatch(异步dispatch里面实际调用的还是同步方法)


Cannot assign to read only property 'exports' of object '#Object' 编译报错

这是因为引用第三方插件的时候,带入了module.exports的写法,webpack可以使用require和export ,但是不能混合使用import 和module.exports,你需要做的是更新根目录下的.babelrc文件配置

eslint连vue和js后缀文件都有严格校验

二话不说,直接找到build目录的webpack.base.conf.js把器rule注释掉。

1
2
3
4
5
6
7
8
9
// {
//   test: /\.(js|vue)$/,
//   loader: 'eslint-loader',
//   enforce: 'pre',
//   include: [resolve('src'), resolve('test')],
//   options: {
 //     formatter: require('eslint-friendly-formatter')
//   }
// },
本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(3) 打赏

上一篇:

下一篇:

相关推荐

0 条评论关于"关于微信小程序mpvue框架的实践采坑小记"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏